#include "Mutex.hpp"
#include "thread.hpp"
#include <cstdio>
#include <vector>
#include <unistd.h>
int ticke = 10;
kzz::Mutex mutex;
void rout()
{
    while (true)
    {
        //RAII风格的锁（智能指针）
         kzz::LockGuard lock(mutex);
        //mutex.Lock();
        if (ticke > 0)
        {
            ticke--;
            printf("ticke: %d\n", ticke);
            //mutex.UnLock();
        }
        else
        {
            //这里也必须要解锁，要不然只有一个线程还拥有锁，
            //但是程序已经结束了，其他线程就会一直等着申请锁
           //mutex.UnLock();
            break;
        }
    }
}

int main()
{
    std::vector<kzz::Thread> vt;

    for (int i = 0; i < 10; i++)
    {
        kzz::Thread p(rout);
        vt.emplace_back( kzz::Thread(rout));
        ///emplace插入，原Thread已经被转移了
        //p.Start();   ////错误
        vt[i].Start();
        
    }
    sleep(3);
    for (int i = 0; i < 10; i++)
    {
        vt[i].Join();
    }


    return 0;
}